package ch.fusun.baron.data;

import java.util.Collection;
import java.util.List;

/**
 * Holds all the data classes
 */
public interface DataRegistry {

	/**
	 * @return update classes
	 */
	List<DataUpdate> getUpdates();

	/**
	 * @return full udaptes for all the data providers
	 */
	List<DataUpdate> getFullUpdate();

	/**
	 * @return All available data providers
	 */
	Collection<DataProvider> getDataProviders();

	/**
	 * Persists (serializes) all the data
	 * 
	 * @param path
	 *            The path to the file
	 * 
	 */
	void persist(String path);

	/**
	 * Loads (deserializes) all the data
	 * 
	 * @param path
	 *            The path to the file
	 */
	void load(String path);

	/**
	 * @return All accumulated update classes
	 */
	List<Class<?>> getUpdateClasses();

	/**
	 * Clears all the accumulated updates
	 */
	void clearUpdates();

}
